package com.linkgie.galaxyframework.utils.image;

import java.awt.Font;
import java.awt.FontFormatException;
import java.io.IOException;
import java.io.InputStream;

public class Fonts {

	private static final Object MUTEX = new Object();

	/**
	 * 思源黑体 Normal ；
	 * 
	 */
	private static Font SOURCE_HANSANS_CN_NORMAL;

	/**
	 * 思源黑体 Normal ；
	 * 
	 * <p>
	 * Google 和 Adobe 提供的开源字体 (https://github.com/adobe-fonts/source-han-sans)；
	 * 
	 * @return 大小(Size）为 1 样式(Style)为 {@link Font#PLAIN} 的字体；
	 */
	public static Font getSourceHanSans_CN_Normal() {
		if (SOURCE_HANSANS_CN_NORMAL == null) {
			synchronized (MUTEX) {
				if (SOURCE_HANSANS_CN_NORMAL == null) {
					// 思源黑体；Google 和 Adobe 提供的开源字体；
					InputStream in = NoiseImage.class.getResourceAsStream("/fonts/SourceHanSansCN-Normal.otf");
					try {
						SOURCE_HANSANS_CN_NORMAL = Font.createFont(Font.TRUETYPE_FONT, in);
						// 注册字体；这是耗时操作；
//						GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(SOURCE_HANSANS_CN_NORMAL);
					} catch (FontFormatException e) {
						throw new IllegalStateException("Font loading error! --" + e.getMessage(), e);
					} catch (IOException e) {
						throw new IllegalStateException("Font loading error! --" + e.getMessage(), e);
					}
				}
			}
		}
		return SOURCE_HANSANS_CN_NORMAL;
	}

	/**
	 * 思源黑体 Normal ；
	 * 
	 * <p>
	 * Google 和 Adobe 提供的开源字体 (https://github.com/adobe-fonts/source-han-sans)；
	 * 
	 * @param style 样式；
	 * @param size  大小；
	 * @return 自定样式和大小的字体；
	 */
	public static Font getSourceHanSans_CN_Normal(int style, float size) {
		return getSourceHanSans_CN_Normal().deriveFont(style, size);
	}

}
